home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_olv_wallblast.cog < prev    next >
Text File  |  1999-11-15  |  6KB  |  237 lines

  1. # Jones 3D Cog Script
  2. #
  3. # olv_wallblast.cog
  4. #
  5. # Cog description
  6. #
  7. # [DS & RD]
  8. #
  9. # (C) 1999 LucasArts Entertainment Company LLC. All Rights Reserved
  10. #
  11. # ===================================================================
  12. symbols
  13.  
  14. message    startup
  15. message    activated
  16. message    damaged
  17. message    pulse
  18.  
  19. surface    crackedwall                    mask=0x408
  20.  
  21. sound        explosion=imp1_wall_break.wav        local
  22. sound       sfxCharge=imp1_chargeup.wav         local
  23. sound        indysay=inxj025.wav            local #This wall looks ready to crumble.
  24. thing       bombpos                    local
  25. thing        dust                        local
  26. thing        player                    local
  27. template    dusttemp=dustcloud            local        
  28. template    debris=stnshrapas_nc_ns            local
  29. template    bomb=ghost                    local
  30. material    dustmat=gen_a4sfx_dustcloud.mat    local
  31. int        fragment=0                    local
  32. int        i=0                        local
  33. int        vibe                        local
  34. int        speak0                    local
  35. flex        blowitup                    local
  36. vector    angoffset                    local
  37. vector    posoffset                    local
  38.  
  39. # .............. INDY SAY LINES ..................................................
  40.     int    lineindex                    local # indexes sound array
  41.  
  42. # wrong item...
  43.     sound    in_itemline0=Inxj089.wav        local # That didn't work.
  44.     sound    in_itemline1=Inxj090.wav        local # ...something wrong.
  45.     sound    in_itemline2=Inxj092.wav        local # Hmm...didn't quite work.
  46.     sound    in_itemline3=Inxj060.wav        local # I don't think...right answer.
  47.     sound    in_itemline4=Inxj087.wav        local # Whoops.
  48.     sound    in_itemline5=Inxj088.wav        local # Nope.
  49.     sound    in_itemline6=Inxj091.wav        local # Of course that didn't work.    
  50.     int    wi_newline=50                local
  51.     int    wi_oldline=50                local
  52.     flex        randwrongitemlines                local
  53.     int    wrongitemoffset                local
  54.  
  55. end
  56. # -------------------------------------------------------------------
  57.  
  58. code
  59. startup:
  60.     Sleep(.3);
  61.     player = GetLocalPlayerThing();
  62.     ClearAdjoinFlags(crackedwall, 2);
  63.     ClearAdjoinFlags(GetSurfaceAdjoin(crackedwall), 2);
  64.     SetFaceGeoMode(crackedwall, 4);
  65.     SetFaceGeoMode(GetSurfaceAdjoin(crackedwall), 4);
  66.     bombpos = CreateThingAtPos(bomb, GetSurfaceSector(crackedwall), GetSurfaceCenter(crackedwall), VectorSet(0, 0, 0));
  67.     CaptureThing(bombpos);
  68.     return;
  69.  
  70. damaged:
  71.     if (GetCurWeapon(player) != 14) return;                #if not holding MP1
  72.     if (GetParam(1) != 0x1000) return;                    #if damage wasn't caused by MP1
  73.     call blowitup;
  74.     return;
  75.  
  76. activated:
  77.     if (GetCurWeapon(player) == 14) return;
  78.     if(getsenderref() == crackedwall)
  79.     {
  80.     SetActorFlags(player, 0x200000);
  81.     MakeMeStop();
  82.     DeselectWeaponWait(player);
  83.     StartCutscene(0);
  84.  
  85.     # ----- Set Cam Offset ---------
  86.     if (Rand() < 0.5)
  87.     {
  88.         SetExtCamOffset('0.15 -0.04 0.05');
  89.     }
  90.     else
  91.     {
  92.         SetExtCamOffset('-0.15 -0.04 0.05');
  93.     }
  94.     SetExtCamLookOffset('0.0 0.02 0.0');
  95.  
  96.       PlayMode(player, 60, 0);
  97.  
  98.     # player is using a wrong item
  99.           if (GetCurItem(player) >= 1)
  100.         {
  101.         sleep(0.5);
  102.         call randwrongitemlines;
  103.         }
  104.     # player isn't using anything
  105.         else
  106.         {
  107.         sleep(0.5);
  108.         speak0 = PlayVoice(player, indysay, 1.0, 1);
  109.         }
  110.         WaitForSound(speak0);
  111.  
  112.     RestoreExtCam();
  113.     ClearActorFlags(player, 0x200000);
  114.     EndCutscene();
  115.     return;
  116.     }
  117.     return;
  118.     
  119. blowitup:
  120.     SetActorFlags(player, 0x200000);
  121.     MakeMeStop();
  122.     StartCutscene(0);
  123.  
  124.     # ----- Set Cam Offset ---------
  125.     if (Rand() < 0.5)
  126.     {
  127.         SetExtCamOffset('0.15 -0.04 0.07');
  128.     }
  129.     else
  130.     {
  131.         SetExtCamOffset('-0.15 -0.04 0.07');
  132.     }
  133.     SetExtCamLookOffset('0.0 0.02 0.0');
  134.  
  135.     sleep(0.3);
  136.     setPulse(0.01);
  137.  
  138.     PlaySoundLocal(sfxCharge, 1.0, 0.0, 0x0, 0);
  139.     Sleep(1.5);
  140.  
  141.     PlaySoundLocal(explosion, 1, 0, 0x0, 0);
  142.     SetAdjoinFlags(crackedwall, 2);
  143.     SetAdjoinFlags(GetSurfaceAdjoin(crackedwall), 2);
  144.     for(i=0; i<40; i=i+1)
  145.     {
  146.         fragment = CreateThing(debris, bombpos);                                 
  147.           SetThingVel(fragment, VectorScale(VectorAdd(RandVec(), '-0.5 -0.1 0.0'), 2));
  148.           SetThingRotVel(fragment, VectorScale(VectorAdd(RandVec(), '0.0 0.0 0.0'), 900.0));                    
  149.     } 
  150.     SetFaceGeoMode(crackedwall, 0);
  151.     SetFaceGeoMode(GetSurfaceAdjoin(crackedwall), 0);
  152.     dust=CreateThing(dusttemp,bombpos);
  153.     MaterialAnim(dustmat, 8.0, 0);
  154.     AnimateSpriteSize(dust, '0.02 0.02 1.0', '0.4 0.4 0.5', 1.0);
  155.     sleep(1.0);
  156.     setPulse(0.0);
  157.     Destroything(dust);  
  158.  
  159.     RestoreExtCam();
  160.     ClearActorFlags(player, 0x200000);
  161.     EndCutscene();
  162.     return;
  163.  
  164. pulse:
  165.     vibe = RandBetween(1, 4);
  166.     if (vibe == 1)
  167.     {
  168.         posOffset = '-0.005 0.00 -0.001'; 
  169.         angOffset = '0.00 -0.001 0.001';
  170.     }
  171.     if (vibe == 2)
  172.     {
  173.         posOffset = '0.005 -0.002 0.001';
  174.         angOffset = '0.001 0.00 -0.001';
  175.     }
  176.     if (vibe == 3)
  177.     {
  178.         posOffset = '0.002 0.002 -0.002';
  179.         angOffset = '-0.001 0.002 -0.002';
  180.     }
  181.     if (vibe == 4)
  182.     {
  183.         posOffset = '-0.001 0.00 0.002';
  184.         angOffset = '0.00 0.00 0.001';
  185.     }
  186.     vibe = RandBetween(1, 3);
  187.     if (vibe == 1)
  188.     {
  189.         SetPulse(0.05);
  190.     }
  191.     if (vibe == 2)
  192.     {
  193.         SetPulse(0.1);
  194.     }
  195.     if (vibe == 3)
  196.     {
  197.         SetPulse(0.15);
  198.     }
  199.     SetPOVShake(posOffSet, angOffSet, 200.0, 200.0);
  200.     return;
  201.  
  202. #=====================================================================
  203. #        Wrong Item lines
  204. #=====================================================================
  205. randwrongitemlines:
  206.  
  207.     while (wi_newline == wi_oldline)
  208.     {        
  209.         wi_newline = RandBetween(0, 19);
  210.         if (wi_newline < 15)
  211.         {    
  212.             wi_newline = RandBetween(0, 3); # ~1/5 chance for lines 0 thru 3
  213.         }
  214.         if (wi_newline == 19)
  215.         {
  216.             wi_newline = 6; # 1/20 chance for line 6 
  217.         }
  218.         if (wi_newline > 16)
  219.         {
  220.             wi_newline = 5; # 1/10 chance for line 5 
  221.         }
  222.         if (wi_newline > 14)
  223.         {
  224.             wi_newline = 4; # 1/10 chance for line 4
  225.         }
  226.     }
  227.     wi_oldline = wi_newline;    
  228.     lineindex = wrongitemoffset + wi_newline;
  229.     speak0 = PlayVoice(player, in_itemline0[lineindex], 1, 1);
  230.     return;
  231.  
  232. end
  233.  
  234.  
  235.  
  236.  
  237.